/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package persistencia;

import util.Protegido;
import java.sql.*;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Iterator;
import java.util.Vector;
import modelo.Usuario;


public class UsuarioDAO {

    //salva dados da pessoa no banco
    public boolean salvar(Usuario usuario) {
        boolean result = false;
        try {
            Connection con = Conexao.getConexao();
            PreparedStatement stmt =
                    con.prepareStatement("insert into \n" +
                    "USUARIO (NOME_USUARIO, LOGIN , SENHA  ) values (?, ?, ?)");
            stmt.setString(1, usuario.getNomeUsuario());
            stmt.setString(2, usuario.getLogin());
            stmt.setString(3, usuario.getSenha1());
            stmt.executeUpdate();
            result = true;
            System.out.print("usuario cadastrado com sucesso");
        } catch (SQLException ex) {
            System.err.println(ex);
            result = false;
        } finally {
            System.out.println();
            Conexao.desconecta();
        }
        
        return result;
    }

    public Usuario autenticarUsuarios(String login, String senha) {
        Usuario usuario = null;

        try {
            Connection con = Conexao.getConexao();
            PreparedStatement stmt =
                    con.prepareStatement("SELECT ID_USUARIO FROM USUARIO WHERE login = ? and senha = ?");
            stmt.setString(1, login);
            senha = Protegido.encriptar(senha);
            stmt.setString(2, senha);
            System.out.print(login + " " + senha);
            ResultSet rs = stmt.executeQuery();
            if (rs.next()){
                usuario = getRecuperar(rs.getInt("ID_USUARIO"));
            }             
        } catch (SQLException ex) {
            System.err.println(ex);
        } finally {
            Conexao.desconecta();
        }
        System.out.println("Usuario é: " + usuario);
        return usuario;
    }

    public Vector getUsuarios() {

        Vector vp = new Vector();

        try {
            Connection con = Conexao.getConexao();
            Statement stmt =
                    con.createStatement();
            String query = ("select * from USUARIO ORDER BY ID_USUARIO ASC");
            ResultSet rs = stmt.executeQuery(query);
            while (rs.next()) {
                Usuario usuario = new Usuario();

                usuario.setId_usuario(Integer.parseInt(rs.getString("ID_USUARIO")));
                usuario.setNomeUsuario(rs.getString("NOME_USUARIO"));
                usuario.setLogin(rs.getString("LOGIN"));
               
                vp.add(usuario);
            }
            Conexao.desconecta();
        } catch (SQLException ex) {
            System.out.println("Problemas com o BD:");
            ex.printStackTrace();
        }
        return vp;
    }

    
    
    

    public Usuario getRecuperar(int id_usuario) {
        Usuario usuario = null;

        try {
            Connection con = Conexao.getConexao();
            Statement stmt =
                    con.createStatement();
            String query = ("select * from USUARIO where ID_USUARIO=" + id_usuario);
            ResultSet rs = stmt.executeQuery(query);
            while (rs.next()) {
                usuario = new Usuario();
                usuario.setId_usuario(Integer.parseInt(rs.getString("ID_USUARIO")));
                usuario.setNomeUsuario(rs.getString("NOME_USUARIO"));
                usuario.setLogin(rs.getString("LOGIN"));
                
            }
            con.close();
        } catch (SQLException ex) {
            System.out.println("Problemas com o BD:");
            ex.printStackTrace();
        }
        return usuario;
    }
    
    public Usuario getLogin(String login){
        Usuario usuario = null;

        try {
            Connection con = Conexao.getConexao();
            Statement stmt =
                    con.createStatement();
            String query = ("select * from USUARIO where LOGIN='" + login + "'");
            ResultSet rs = stmt.executeQuery(query);
            while (rs.next()) {
                usuario = new Usuario();
                usuario.setId_usuario(Integer.parseInt(rs.getString("ID_USUARIO")));
                usuario.setNomeUsuario(rs.getString("NOME_USUARIO"));
                usuario.setLogin(rs.getString("LOGIN"));
                
            }
            con.close();
        } catch (SQLException ex) {
            System.out.println("Problemas com o BD:");
            ex.printStackTrace();
        }
        return usuario;
    
    }

    public static void main(String[] args) {

        String nomeUsuario = "NOME_USUARIO";
        String login = "LOGIN";
        String senha1 = "SENHA";
        String sen = Protegido.encriptar(senha1);
        System.out.print(sen);
        
         
            
        Usuario usuario = new Usuario (nomeUsuario, login, sen);
        //    usuario.setId_usuario(16);
        
        UsuarioDAO a = new UsuarioDAO();
       
        Vector v = a.getUsuarios();
        Iterator it = v.iterator();

        while (it.hasNext()) {
            Usuario p = (Usuario) it.next();
            System.out.println(p);
            System.out.println("Nome do usuario"+ nomeUsuario);
        }
        v = a.getUsuarios();
        it = v.iterator();
        while (it.hasNext()) {
            Usuario p = (Usuario) it.next();
            System.out.println();

        }
        
        usuario = a.getLogin("bb");
        System.out.println(usuario);
        
        usuario = a.autenticarUsuarios("bb", "b");
        System.out.println(usuario);
        
        usuario = a.autenticarUsuarios("bb", "bb");
        System.out.println(usuario);
        
        usuario = a.getRecuperar(16);
        System.out.println(usuario);
    }
}


